package com.hqd.ch03.v24.aop;

/**
 * 切面目标对象接口
 */
public interface TargetSource {
    /**
     * 获取目标对象class对象
     *
     * @return
     */
    Class<?> getTargetClass();

    /**
     * 是否是静态对象
     * 什么是静态对象？
     * 单例这种可以算静态
     *
     * @return
     */

    boolean isStatic();

    /**
     * 获取目标对象
     *
     * @return
     * @throws Exception
     */
    Object getTarget();

    /**
     * 释放对象
     * 用于对象池之类的实现时，才有用
     *
     * @param target
     * @throws Exception
     */
    void releaseTarget(Object target);
}
